Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Commit 9a10a0373454494d19ae5ce21eaad44c15a9602a


Parents : 3c196e2
Author : Ivan <ivan@quad4.io>
Signature : Signature validation error
Date : 2026-05-08T23:45:23-05:00

feat(SettingsPage): implement favourites import/export functionality and handle API responses

Changes

1 files changed, 14 insertions(+), 1 deletions(-)


Diff

diff --git a/meshchatx/src/frontend/components/settings/SettingsPage.vue b/meshchatx/src/frontend/components/settings/SettingsPage.vue
index 1a1f70be..18924478 100644
--- a/meshchatx/src/frontend/components/settings/SettingsPage.vue
+++ b/meshchatx/src/frontend/components/settings/SettingsPage.vue
@@ -4262,9 +4262,17 @@ export default {
} catch {
// keep empty layout
}
+ let favourites = [];
+ try {
+ const response = await window.api.get("/api/v1/favourites");
+ favourites = response.data.favourites || [];
+ } catch {
+ // continue without favourite records
+ }
const body = {
format: "meshchatx/nomadnet_favourites/v1",
exported_at: new Date().toISOString(),
+ favourites,
layout,
};
const blob = new Blob([JSON.stringify(body, null, 2)], { type: "application/json" });
@@ -4287,13 +4295,18 @@ export default {
return;
}
const reader = new FileReader();
- reader.onload = (e) => {
+ reader.onload = async (e) => {
try {
const data = JSON.parse(e.target.result);
const parsed = this.parseNomadnetFavouritesImportData(data);
if (!parsed) {
throw new Error("invalid file");
}
+ if (Array.isArray(data.favourites) && data.favourites.length > 0) {
+ await window.api.post("/api/v1/favourites/import", {
+ favourites: data.favourites,
+ });
+ }
if (parsed.kind === "full") {
localStorage.setItem("meshchat.nomadnet.favourites.layout", JSON.stringify(parsed.layout));
} else if (parsed.kind === "section") {


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────